OnWeight — Prototype
OnWeight - Prototype.html is the clickable prototype: every screen runs inside a real iPhone frame, and the in-screen controls are now wired — you tap the app's own buttons, rows and keypad, not just chrome. Screen position, pace, sport and sex persist across reloads.
Chrome controls
- Pace toggle (On / Behind / Off) — drives the on-track / behind / off-track verdicts live across Dashboard, Trend, the log result and drift screens.
- ‹ Back — history-aware; falls back to a screen's declared parent when there's no stack.
- Next › — advances the current flow (respects branch logic).
- Jump menu — reaches any of the wired screens, grouped by flow.
- The flow tag shows the live state, e.g.
Onboarding · ob-date · Boxing · ♀.
What's wired (tap the screen itself)
- Onboarding spine — Launch GET STARTED → Account → Sport → Date → Sex → Current weight → Limit → Cut rate → Strategies → Building → Coach's Read → Paywall → Dashboard. Primary CTAs advance; Back/Skip behave correctly; steppers, calendar arrows and toggles do not mis-advance.
- Branching (real forks)
- Sport — tapping a sport on the Sport step is captured and threaded through Goal, Coach's Read,
Plan and Competition-rules (the flow tag shows the chosen sport).
- Sex — choosing Female is captured (♀) and routes the Refine flow through the cycle step (
gs-weigh → gs-cycle → gs-rules); Male skips it. - Entry / auth — Launch → "I already have an account" → Log in; Login → Forgot password → reset-link → back to Login; Login → Dashboard.
- Core loop — Dashboard ⇄ Plan / Trend / More via the live tab bar. ADD TODAY'S WEIGHT → Log; the keypad accepts real input (type to change the number) → Save → Result. The Result now shows the number you typed and derives its verdict from it (within ±0.2 kg of the day's expected weight = on track; heavier = behind; well over = off) — the pace toggle still overrides for demoing.
- Settings gear & trend — the nav gear (any screen) opens Account & units; Dashboard Details opens the trend.
- More → Settings — Notifications, Account & units, Past camps, Weekly all open by tapping the row. Within Account: Subscription, Privacy & data, Units, Sign out.
- Modals / sheets & destructive confirms — Manage fight → its sheet; sheet → Cancel fight / Change goal / log result. Privacy & data → Delete account confirm; Subscription → Cancel confirm. Confirm/close buttons dismiss back to where you came from.
- Off-pace — Drift (behind / fast) verdict → the matching Change-Plan screen (projection / safety).
- Empty states — "Log your first weight" → Log.
- Competition rules — "Enter details manually" → the 6-step granular sub-flow.
- Transitions — a light slide-in on every screen change, with a
prefers-reduced-motion fallback.
How the wiring works
Rather than editing 25 component files, a small delegation layer in the prototype maps taps to destinations: it matches the tapped control's own text against a per-screen rule table, and otherwise advances the flow on any genuine primary CTA. This keeps the design components untouched and editable.
Remaining / intentionally not modelled
These are scope choices, not breakage — call them out at handoff:
- Not every leaf control routes. Secondary links, individual settings rows inside detail screens, and decorative chevrons are presentational. The primary journeys above are all tappable.
- One sport's screens deep-thread; others use MMA copy in spots. Sport selection drives the rules/goal/coach/plan, but a few mid-funnel screens still show MMA sample data.
- Result is now typed-weight-driven (closed): the verdict maps from your logged number vs the day's expected weight. The pace toggle remains as a demo override and to reach the edge verdicts directly. Full re-derivation of every downstream stat from one number is a dev/engine task.
- State screens are reachable but not all auto-triggered. Lifecycle/error/empty states are driven by date/data/connectivity in real life; here they're reached via the jump menu or their nearest trigger (pace toggle, Manage fight, drift verdict). A production build wires them to real signals.
- No real persistence/back-end — accounts, payments, sync are mocked (see the Errors flow for the failure-state designs).
- Newer launch screens are designed but not yet wired into this clickable prototype. The safety disclaimer + age gate (account step), legal docs (Terms / Privacy + data export/delete), the five cut-strategy ⓘ info sheets, the ±20 kg out-of-range goal gate, kg/lb (imperial) parity, and the widgets all exist in OnWeight - All Screens.html. Threading them into the tappable prototype is the next wiring increment.
Recommendation
The prototype now demonstrates the full happy path end-to-end with real taps, plus the sport and sex forks, settings drill-downs, destructive confirms and a live log. It's demo-ready. The next increment, if wanted, is recomputing the Result from the typed weight and wiring the remaining secondary links.